/*
    Copyright (C) 2013 maik.jablonski@jease.org

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package jfix.zk;

import java.util.Collection;
import java.util.Date;

public class ObjectConverter {

	private static String delimiter = "\n";

	private ObjectConverter() {
	}

	public static Object convert(Object value) {
		if (value == null) {
			return "";
		}

		if (value instanceof Number) {
			return value;
		}

		if (value instanceof Date) {
			String result = String.format("%1$tF %1$tR", value);
			int index = result.lastIndexOf(" 00:00");
			if (index == -1) {
				return result;
			} else {
				return result.substring(0, index);
			}
		}

		if (value instanceof View) {
			return convert(((View) value).getValue());
		}

		if (value instanceof Collection) {
			return convert(((Collection) value).toArray());
		}

		if (value.getClass().isArray()) {
			StringBuilder sb = new StringBuilder(256);
			for (Object obj : (Object[]) value) {
				if (sb.length() != 0) {
					sb.append(delimiter);
				}
				sb.append(convert(obj));
			}
			return sb.toString();
		}

		return String.valueOf(value);
	}

}
